#include <emmintrin.h>
#include <iostream>

int main() {
    // 定义两个 128 位整数向量
    __m128i v1 = _mm_set_epi32(10, 20, 30, 40);
    __m128i v2 = _mm_set_epi32(5, 25, 35, 45);

    // 使用 _mm_cmpgt_epi32 比较 v1 和 v2
    __m128i mask = _mm_cmpgt_epi32(v1, v2);  // v1 > v2 时为 0xFFFFFFFF， 否则为 0

    // 使用 _mm_and_si128 和 _mm_set_epi32 进行条件选择
    __m128i result =
        _mm_and_si128(mask, v1);  // 如果 mask 为 0xFFFFFFFF，则选择 v1 中的值，否则选择 0

    // 打印结果
    int* resultArray = (int*)&result;
    for (int i = 0; i < 4; i++) {
        std::cout << resultArray[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}